Program Synthesis systems synthesize a program from a given Domain Specific Language (DSL), starting from a given specification. Programming-by-example systems are an example of one type of program synthesis systems. The specification may include a small number of input-output examples provided by the user. Providing all of the possible or even a large number of input-output examples may not be feasible or desirable for the user. Providing additional input-output examples, however, is useful in synthesizing programs that produce more accurate output over a larger number of inputs.